package cn.iocoder.yudao.module.of.dal.dataobject.schedulecenter;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 日程中心 信息 DO
 *
 * @author 超级管理员
 */
@TableName(value = "of_schedule_center", autoResultMap = true)
@KeySequence("of_schedule_center_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleCenterDO extends TenantBaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 标题
     */
    private String title;
    /**
     * 参与人员
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Set<String>  participants;
    /**
     * 开发时间
     */
    private LocalDateTime startTime;
    /**
     * 结束时间
     */
    private LocalDateTime endTime;
    /**
     * 会议地点
     */
    private String location;
    /**
     * 日程类型
     */
    private Integer category;

    /**
     * 优先级
     */
    private Integer priorityId;
    /**
     * 优先级名称
     */
    private String priorityName;
    /**
     * 图标
     */
    private String icon;
    /**
     * 描述
     */
    private String description;
    /**
     * 提醒人员
     */
    private Integer reminder;
    /**
     * 提醒类型（弹窗、企业微信等）
     */
    private String type;
    /**
     * 提醒时间( 提前15分钟、提前30分钟）
     */
    private Integer remindTimeType;
    /**
     * 提醒时间点2025-04-12 12:30:00
     */
    private LocalDateTime remindTime;
    /**
     * 重复周期
     */
    private Integer repeatPeriod;
    /**
     * 附件地址
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Set<Long> attachments;
    /**
     * 附件对象
     */

    /**
     * 标签
     */
//    @TableField(typeHandler = JacksonTypeHandler.class)
//    private Set<String> tags;
    /**
     * 状态
     */
    private Boolean status;

    /**
     * 调度ID
     */
    private Long jobId;

}